import { API } from "../api";
import Cookies from "js-cookie";

// https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
export const wxJSsdk = async (debug = false) => {
  /** 首次访问时间*/
  const vtime = Cookies.get("vtime");
  if (!vtime) {
    Cookies.set("vtime", String(Date.now()), {
      expires: new Date("2024/06/22 23:59:59"),
    });
    API.userControllerXycDataAdd({ share: 1 });
  }
  const {
    data: { data = {} as any },
  } = await API.baseControllerGetWxSign({ url: location.href });
  console.log("🚀 ~ wxconfig ~ r:", data);
  wx.config({
    debug: debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
    appId: data.appId, // 必填，公众号的唯一标识
    timestamp: data.timestamp, // 必填，生成签名的时间戳
    nonceStr: data.nonceStr, // 必填，生成签名的随机串
    signature: data.signature, // 必填，签名
    jsApiList: [
      "onMenuShareTimeline",
      "onMenuShareAppMessage",
      "updateAppMessageShareData",
      "updateTimelineShareData",
    ], // 必填，需要使用的JS接口列表
  });
  wx.ready(function () {
    // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
    console.log("微信初始化成功~");
    // 分享朋友圈
    wx.onMenuShareTimeline({
      title: "【京东家电 盛大开业】", // 分享标题
      link: "https://www.iskxz.com/xyc", // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: "https://www.iskxz.com/xyc/index/1_01.jpg", // 分享图标
      success: function () {
        // 用户点击了分享后执行的回调函数
        debug && alert("分享朋友圈成功");
        debug && console.log("分享朋友圈成功");
        API.userControllerXycDataAdd({ share: 1 });
      },
    });
    // 分享朋友
    wx.onMenuShareAppMessage({
      title: "【京东家电 盛大开业】", // 分享标题
      desc: "诚邀您参与本次品牌联动家装节活动，更多优惠请点击链接查看……", // 分享描述
      link: "https://www.iskxz.com/xyc", // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: "https://www.iskxz.com/xyc/index/1_01.jpg", // 分享图标
      type: "link", // 分享类型,music、video或link，不填默认为link
      dataUrl: "", // 如果type是music或video，则要提供数据链接，默认为空
      success: function () {
        // 用户点击了分享后执行的回调函数
        debug && alert("分享好友成功");
        debug && console.log("分享好友成功");
        API.userControllerXycDataAdd({ share: 1 });
      },
    });
    wx.updateAppMessageShareData({
      title: "【京东家电 盛大开业】", // 分享标题
      desc: "诚邀您参与本次品牌联动家装节活动，更多优惠请点击链接查看……", // 分享描述
      link: "https://www.iskxz.com/xyc", // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: "https://www.iskxz.com/xyc/index/1_01.jpg", // 分享图标
      success: function () {
        // 设置成功
        debug && alert("分享给朋友”及“分享到QQ");
        debug && console.log("分享给朋友”及“分享到QQ");
        // API.userControllerXycDataAdd({ share: 1 })
      },
    });
    wx.updateTimelineShareData({
      title: "【京东家电 盛大开业】", // 分享标题
      link: "https://www.iskxz.com/xyc", // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: "https://www.iskxz.com/xyc/index/1_01.jpg", // 分享图标
      success: function () {
        // 设置成功
        debug && alert("分享好友成功分享到朋友圈”及“分享到QQ空间");
        debug && console.log("分享好友成功分享到朋友圈”及“分享到QQ空间");
        // API.userControllerXycDataAdd({ share: 1 })
      },
    });
  });
  wx.error(function (res: any) {
    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
    debug && alert(JSON.stringify(res));
  });
};
